// pages/map/map.js
// 引入SDK核心类
var QQMapWX = require('../../utils/qqmap-wx-jssdk.min.js');

// 实例化API核心类
var qqmapsdk = new QQMapWX({
  key: 'GDJBZ-DJR6F-X7ZJH-JQTJE-2AB3T-5FF6U' // 必填
});

Page({
  data: {
    markers:[{
      iconPath:"/images/clinic/mapp.png",
      width:30,
      height:30,
      longitude: null, //五邑中医院
      latitude: null, //五邑中医院
      label:{
        content:"",
        fontSize:"30rpx",
        color:"#a44",
        bgColor:"#ffffffcc",
        padding:"5rpx"
      },
    }],
    longitude: null, //默认中心地点
    latitude: null, //默认中心地点
    polyline: [], //路径
    to_longitude: null, //五邑中医院
    to_latitude: null, //五邑中医院
    mode: "driving", //一开始默认出行方式是驾车
    distance: 0, //距离
    duration: 0, //时长
  },
  //从数据库获取诊所信息
  onLoad(){
    wx.cloud.callFunction({
      name: "clinicInfo",
      data: {
        action: "find",
      }
    }).then(res => {
      var longitude="markers[0].longitude"
      var latitude="markers[0].latitude"
      var content="markers[0].label.content"
      console.log('获取数据库中的诊所信息成功', res)
      this.setData({
        to_longitude:parseFloat(res.result.data[0].clinicLongitude),
        to_latitude:parseFloat(res.result.data[0].clinicLatitude),
        longitude:parseFloat(res.result.data[0].clinicLongitude),
        latitude:parseFloat(res.result.data[0].clinicLatitude),
        [latitude]:parseFloat(res.result.data[0].clinicLatitude),
        [longitude]:parseFloat(res.result.data[0].clinicLongitude),
        [content]:res.result.data[0].clinicName,
      })
      // console.log(11111,this.data.to_longitude,this.data.to_latitude)
      this.start()//一开始就得出驾车的图
    }).catch(res => {
      console.log('获取数据库中的诊所信息失败', res)
    })
  },
  drive() { //点击驾车按钮
    this.setData({
      mode: "driving"
    })
    this.start()
  },
  walk() { //点击步行按钮
    this.setData({
      mode: "walking"
    })
    this.start()
  },
  bicycle() { //点击骑行按钮
    this.setData({
      mode: "bicycling"
    })
    this.start()
  },

  start() { //得出路线
    setTimeout(() => {
      var _this = this
      //调用距离计算接口
      qqmapsdk.direction({
        mode: _this.data.mode,
        //from参数不填默认当前地址
        // from: {
        //   longitude: 113.085190,
        //   latitude: 22.596180,
        // },
        to: {
          longitude: this.data.to_longitude,
          latitude: this.data.to_latitude,
        },
        success: function (res) {
          // console.log(111, res);
          if (res.status != 0) {
            console.log("出错,可能是起终点距离超长")
          } else {
            var ret = res;
            var distance = ret.result.routes[0].distance;
            var duration = ret.result.routes[0].duration;
            var coors = ret.result.routes[0].polyline;
            var pl = [];
            //坐标解压（返回的点串坐标，通过前向差分进行压缩）
            var kr = 1000000;
            for (var i = 2; i < coors.length; i++) {
              coors[i] = Number(coors[i - 2]) + Number(coors[i]) / kr;
            }
            //将解压后的坐标放入点串数组pl中
            for (var i = 0; i < coors.length; i += 2) {
              pl.push({
                latitude: coors[i],
                longitude: coors[i + 1]
              })
            }
            // console.log(222, pl)
            //设置polyline属性，将路线显示出来,将解压坐标第一个数据作为起点
            _this.setData({
              latitude: pl[0].latitude,
              longitude: pl[0].longitude,
              polyline: [{
                points: pl,
                color: '#009999',
                width: 4
              }],
              duration: duration,
              distance: distance,
            })
          }
        },
        fail: function (error) {
          console.error(error);
        },
      });
    }, 300)
  },
})